package com.situ.study.day6;

/**
 * 类是描述一个事物，应该用名词
 * 实体类 Student、Banji，一般来说会和数据库中的一张表对应
 * 当前类
 */
//@Data
public class Student {
    //属性，属性应该私有，描述一个事物：静
    //private的属性和方法只能在当前类访问
    //学号
    private int id;
    /**
     * 名字
     * "zhangsan"
     */
    private String name;
    private int age;
    private String className;

    //构造方法：没有返回值，方法名和类名一样
    //如果不写任何构造方法，默认提供一个无参构造方法
    //如果你写了任何构造方法，java就不再提供者这个默认无参构造方法
    public Student() {
        //soutm
        System.out.println("Student.Student");
    }

    public Student(int id, String name, int age, String className) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.className = className;
    }

    //方法 完成一个动作：动
    public void show() {
        //大括号里面{}叫方法体
        System.out.println("id是" + id+"的" + name + "正在" + className + "班学习");
    }

    public String print() {
        return "Student[id:"+id+",name:"+name+",age:"+age+",className:"+className+"]";
    }

    public void study() {
        System.out.println(name + "正在" + className + "班学习");
    }

    //就近原则
    public void setAge(int age) {
        if (age >=1 && age <= 150) {
            //Variable 'age' is assigned to itself
            //this代表调用setAge这个方法的对象
            this.age = age;
        }
    }

    public int getAge() {
        return this.age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }



    //重写
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", className='" + className + '\'' +
                '}';
    }



}
